function plotClass(X, label)
% Plot 2d/3d samples of different classes with different colors.

[d,n] = size(X);
if nargin == 1
    label = ones(n,1);
end
if d==4 || d==8
%     reshape(X(:, :, :, :), 2, 1600);
        reshape(squeeze(X(:,1,:,:)),2,[])
    d = 3;
end
assert(n == length(label));
color = 'brgmcyk';
m = length(color);
c = max(label);

figure(gcf);
clf;
hold on;
switch d
    case 2
        view(2);
        for i = 1:c
            idc = label==i;
%             plot(X(1,label==i),X(2,label==i),['.' color(i)],'MarkerSize',15);
            scatter(X(1,idc),X(2,idc),36,color(mod(i-1,m)+1));
        end
    case 3
        view(3);
        for i = 1:c
            idc = label==i;
%             plot3(X(1,idc),X(2,idci),X(3,idc),['.' idc],'MarkerSize',15);
            scatter3(X(1,idc),X(2,idc),X(3,idc),36,color(mod(i-1,m)+1));
        end
%         case 4
%         view(4);
%         for i = 1:c
%             idc = label==i;
% %             plot3(X(1,idc),X(2,idci),X(3,idc),['.' idc],'MarkerSize',15);
%             scatter3(X(1,idc),X(2,idc),X(3,idc), X(4,idc),36,color(mod(i-1,m)+1));
%         end
    otherwise
        error('ERROR: only support data of 2D or 3D.');
end
axis equal
grid on
hold off